﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CoreGallery.Addins.Contracts;

namespace CoreGallery.Core.AddinMgr
{
    public class AddinInfo
    {
        Guid _uniqueId;
        string _addinName;
        string _description;
        Version _version;
        bool _isEnabled;
        bool _isLoaded;
        Type _addinType;
        Type _addinInterface;
        ICoreAddinBase _addinInstance;

        public Guid UniqueId
        {
            get { return _uniqueId; }
            set { _uniqueId = value; }
        }

        public string AddinName
        {
            get { return _addinName; }
            set { _addinName = value; }
        }

        public string Description
        {
            get { return _description; }
            set { _description = value; }
        }

        public Version Version
        {
            get { return _version; }
            set { _version = value; }
        }

        public bool IsEnabled
        {
            get { return _isEnabled; }
            set { _isEnabled = value; }
        }

        public bool IsLoaded
        {
            get { return _isLoaded; }
            set { _isLoaded = value; }
        }

        public Type AddinType
        {
            get { return _addinType; }
            set { _addinType = value; }
        }

        public Type AddinInterface
        {
            get { return _addinInterface; }
            set { _addinInterface = value; }
        }

        public ICoreAddinBase AddinInstance
        {
            get { return _addinInstance; }
            set { _addinInstance = value; }
        }
    }
}

/*
Acquisition/Import (ways to acquire images: scanner, folder, camera)
Publish/Export (ways to send images: print, email, blog)
Transform (UI + logic for modifying images, geocode, face tag)
Storage (database/website/system for saving and loading)
Service (logic to subscribe to events or work on idle to process images/metadata)
Visualizer ()
Searcher (UI for custom searching like color palette, faces, georegion)
*/